package function

import (
	"reflect"

	"gitee.com/knowgo/ego/core/data"
	"gitee.com/knowgo/ego/egoc"
)

type ContextArg struct {
	// IsPtr Feild 是否指针
	IsPtr bool
}

func NewContextArg(isPtr bool) *ContextArg {
	return &ContextArg{IsPtr: isPtr}
}

func (s *ContextArg) Value(request *data.ServiceRequest, ctx *egoc.Context, argCtx *ArgContext) (reflect.Value, error) {
	if s.IsPtr {
		return reflect.ValueOf(ctx), nil
	}
	return reflect.ValueOf(ctx).Elem(), nil
}
